In the conventional art, network devices (e.g. computers, workstations, servers, or the like) are generally comprised of hardware, an operating system, and one or more user programs (hereinafter referred to as applications). The hardware (e.g. processor, memory, input/output devices, etc.) provides the basic computing resources. The applications (e.g. database systems, text editors, games, and the like) provide users with various functions. The operating system generally controls and coordinates the use of the hardware among the various applications.
The Unix operating system (Unix) is one example of an operating system that is currently used by many enterprise computer systems. Unix consists of two separable parts, which include the kernel space and user space. The user space typically provides an operating environment for executing system libraries, compilers, interpreters, shells and other such modules, which provide useful functions to the user. The kernel space provides an operating environment for central control processes such as file-system access, communication protocols, and other system facilities.
The kernel space typically includes one or more network communication protocols, such as the TCP/IP suite. The TCP/IP protocol suite is typically divided into three layers: transport layer, internet layer, and network access layer. The transport layer (TCP) provides a flow control protocol. The flow control protocol keeps track of data packets to assure reliable delivery to an appropriate application. It includes explicit and acknowledged connection initiation and termination, reliable in-order unduplicated delivery of data, and out of band indication of urgent data. The internet layer (IP) provides an addressing and routing protocol. The addressing and routing protocol includes host-to-host addressing and routing of data packets, data packet fragmentation, and re-assembly. The network access layer provides a driver protocol, such as data link provider interface (DLPI), or the like. The driver protocol provides access to and transmission of data across a communication channel (physical layer).
Referring to FIG. 1, a diagram of a network communication receive stream in accordance with the conventional art is shown. As depicted in FIG. 1, one or more data packets 110 are communicated across a communication channel. Each data packet is comprised of a header 115 and a payload 120. An interface module 125 acquires the data packets 110 and stores them in a buffer. The interface module 125 generates an interrupt upon acquiring a data packet. The interrupt initiates a thread of execution. The thread of execution represents the code stack comprising the applicable protocol suite (e.g. DLPI, IP protocol, TCP protocol, and/or the like). The interrupt therefore causes a protocol module 130 to receive the data packet and provide for routing and flow control. The thread then provides the payload 120 contents of the data packet 110 to a destination application 140.
According to the conventional art, the thread of execution spans from the interface module 125 to the application 140. The long thread provides the payload to the application 140 as quickly as possible. Thus, according to the conventional art, the long thread provides for short data latency when receiving data packets.
However, while the thread is being executed, the protocol module 130 cannot service another data packet. Therefore, the interface module 125 buffers other incoming data packets until the protocol module 130 can service another data packet. However, the interface module 125 has a finite buffer for holding data packets. Therefore, if the data packets are received faster then the protocol module 130 can process them, the interface module 125 will drop data packets once its buffer is full.
Thus, the network communication protocol is prone to scalability issues when the interface module 125 speed exceeds the processor speed of the network device. This is because the receive processing is done from a single thread of execution and does not take into account application related issues, such as flow control or the like.